#指定编译器
CC = gcc

#指定c语言版本
# CVERSION = -std=c99    #使用C99
 CVERSION =              #不指定默认使用gnu c 若在程序是linux程序不要制定从语言版本
#设置编译选项
CFLAGS = -Wall -g -O0 

#系统文件夹
# SYSTEM_PATH_ROOT = /usr/include
# SYSTEM_PATH := $(wildcard $(SYSTEM_PATH_ROOT)/*/)
# SYSTEM_PATH := $(patsubst %/,%,$(SYSTEM_PATH))
# SYSTEM_PATH := $(SYSTEM_PATH_ROOT) $(SYSTEM_PATH)

#头文件路径
INLCUDE_PATH  = . ./msg_queue ./mutex ./sempahore ./task ./port ./core ./config
INLCUDE = $(foreach n, $(INLCUDE_PATH), -I$(n))
INLCUDE += $(foreach n, $(SYSTEM_PATH), -I$(n))

#源文件路径
SRCS = . ./msg_queue ./mutex ./sempahore ./task ./port ./core ./config

#库文件
LIB =

#宏定义
DEFINITION_LIST =
DEFINITION = $(foreach n, $(DEFINITION_LIST), -D$(n))

#编译的目标
target = myos

#objs :所有的.o文件
ALL_CFILE = $(foreach n, $(SRCS), $(wildcard $(n)/*.c)) #所有的.c文件
objs = $(patsubst %.c, %.o, $(ALL_CFILE))

#依赖文件
dep_files = $(wildcard $(patsubst %, %.d,$(objs)))

$(target):$(objs)
	$(CC) $^ -o $@ $(CVERSION) $(LIB)	
ifneq ($(dep_files),)
include $(dep_files)
endif
$(objs):%.o:%.c
	$(CC) -c $< -o $@ $(CFLAGS) $(INLCUDE) $(DEFINITION) $(CVERSION) -MD -MF $@.d
clean:
	rm -fr $(target) $(objs) $(dep_files)
PHONY:clean

